package cn.jy.map.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

public interface GjzAllTypeMapper {

	/**
	 * 获取某一年采的总浆量
	 * @param year
	 * @return
	 */
	Map<String,Integer> getAllPlasmaGrossByYear(@Param("date")String date,@Param("thisYear")String thisYear);
	
	/**
	 * 获取某一年的采浆的浆员数量
	 * @param year
	 * @return
	 */
	int getAllPlasmaProviderNum(@Param("year")String year);
	
	/**
	 * 获取某一年的采浆的浆员卡号集合
	 * @param year
	 * @return
	 */
	List<String> getAllPlasmProviderNo(@Param("year")String year);
	
	/**
	 * 获取浆员数量和总采浆量（次数），根据年份，获取这一年建档的浆员数量，如果year为null，则获取所有浆员的数量
	 * @param year
	 * @return
	 */
	Map<String,Integer> getAllProviderNum(@Param("year")String year);
	
	/**
	 * 获取忠诚浆员：
	 * 某一年建档的，在指定日期所属的年和指定日期的上一年都来献过浆的
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 * @param createYear ： 建档年份
	 * @param flag ： 如果 flag == 1 ,则查询指定年份之前的所有年份建档的所有浆员
	 * @return
	 */
	Map<String,Integer> getCondition_01(@Param("date")String date,@Param("thisYear")String thisYear,
			@Param("lastYear")String lastYear,@Param("createYear")String createYear,@Param("flag")String flag);   
	/**
	 * 获取复苏浆员：
	 * 某一年建档的，在指定日期所属的年来献过浆，在上一年没有来献过浆
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 * @param createYear ： 建档年份
	 * @param flag ： 如果 flag == 1 ,则查询指定年份之前的所有年份建档的所有浆员
	 * @return
	 */
	Map<String,Integer> getCondition_02(@Param("date")String date,@Param("thisYear")String thisYear,
			@Param("lastYear")String lastYear,@Param("createYear")String createYear,@Param("flag")String flag);   
	/**
	 * 获取休眠浆员：
	 * 某一年建档的，在指定日期所属的年没来献过浆，在上一年来献过浆
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 * @param createYear ： 建档年份
	 * @param flag ： 如果 flag == 1 ,则查询指定年份之前的所有年份建档的所有浆员
	 * @return
	 */
	Map<String,Integer> getCondition_03(@Param("date")String date,@Param("thisYear")String thisYear,
			@Param("lastYear")String lastYear,@Param("createYear")String createYear,@Param("flag")String flag);   
	/**
	 * 获取流失浆员：
	 * 某一年建档的，在指定日期所属的年和指定日期的上一年都没来献过浆的
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 * @param createYear ： 建档年份
	 * @param flag ： 如果 flag == 1 ,则查询指定年份之前的所有年份建档的所有浆员
	 * @return
	 */
	Map<String,Integer> getCondition_04(@Param("date")String date,@Param("thisYear")String thisYear,
			@Param("lastYear")String lastYear,@Param("createYear")String createYear,@Param("flag")String flag);   
	
	/**
	 * 获取指定日期前所有忠诚浆员的数量、采浆次数
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 */
	Map<String,Integer> getAllZcjyBeforeDate(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	
	/**
	 * 获取指定日期之前建档的所有浆员数量和总采浆量（次数）
	 * @param date
	 * @return
	 */
	Map<String,Integer> getCountProviderNum(@Param("date")String date);
	
	
	/**
	 * 获取指定日期前的所有复苏浆员的个数和采浆总量
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 */
	Map<String,Integer> getCountFuSu(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	/**
	 * 获取指定日期前的所有休眠浆员的个数和采浆总量
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 */
	Map<String, Integer> getCountXiuMian(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	/**
	 * 获取指定日期前的所有流失浆员的个数和采浆总量
	 * @param date ：指定日期
	 * @param thisYear ： 指定日期所属的年
	 * @param lastYear ： 指定日期所属的年 的上一年
	 */
	Map<String, Integer> getCountLiuShi(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	
	/**
	 * 获取指定日期所在的年的新建档的浆员（建档时间要小于等于指定的日期）
	 * @param date
	 * @param thisYear
	 * @return
	 */
	Map<String, Integer> getNewGjzByDate(@Param("date")String date,@Param("thisYear")String thisYear);
	
	
	
	
	/**
	 * 查询指定日期前建档的所有浆员，返回浆员的卡号
	 * @param date
	 * @param thisYear
	 * @return
	 */
	List<String> getAllJy(@Param("date")String date);
	/**
	 * 查询指定日期前出现的忠诚浆员，返回浆员的卡号
	 * @param date
	 * @param thisYear
	 * @return
	 */
	List<String> getZcJy(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	
	/**
	 * 查询指定日期前出现的复苏浆员，返回浆员的卡号
	 * @param date
	 * @param thisYear
	 * @return
	 */
	List<String> getfsJy(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	
	/**
	 * 查询指定日期前出现的新浆员，返回浆员的卡号
	 * @param date
	 * @param thisYear
	 * @return
	 */
	List<String> getNewJy(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	
	/**
	 * 查询指定日期前出现的休眠浆员，返回浆员的卡号
	 * @param date
	 * @param thisYear
	 * @return
	 */
	List<String> getXmJy(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	
	/**
	 * 查询指定日期前出现的流失浆员，返回浆员的卡号
	 * @param date
	 * @param thisYear
	 * @return
	 */
	List<String> getLsJy(@Param("date")String date,@Param("thisYear")String thisYear,@Param("lastYear")String lastYear);
	
	/**
	 * 查询指定浆员中，链接、未链接的浆员的卡号
	 * @param date
	 * @param thisYear
	 * @return
	 */
	List<String> getLjJy(@Param("type")String type,@Param("list")List<String> list);
	
	/**
	 * 获取指定日期所属的年份到指定日期期间，进站的所有浆员卡号集合
	 * @param date
	 * @param thisYear ：当前年份
	 * @param type : 为 1 就表示查询进站的人的集合，否则就是查询没有进站的人的集合
	 * @return
	 */
	List<String> getThisYearComed(@Param("date")String date,@Param("thisYear")String thisYear,@Param("type")String type);
	
	
	
	
}
